package com.ycsj.common.manager;

import android.content.Context;
import android.view.View;

import com.bigkoo.pickerview.TimePickerView;
import com.ycsj.common.R;

import java.util.Calendar;
import java.util.Date;

/**
 * 时间选择器,地址选择器的管理类
 * Created by Administrator on 2018/1/19 0019.
 */

public class TimePickerManager {

    //时间选择器对象
    private static TimePickerView pvTime;

    /**
     * 初始化时间选择器的方法
     *
     * @param context
     * @param listener
     */
    public static void showPicker(Context context, final onSelectedListener listener) {

        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        //startDate.set(2013,1,1);
        Calendar endDate = Calendar.getInstance();
        //endDate.set(2020,1,1);

        //正确设置方式 原因：注意事项有说明
        startDate.set(2013, 0, 1);
        endDate.set(2020, 11, 31);

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, true, true, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期和时间")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 初始化时间选择器的方法,指定时间选择器的初始化时间为当前时间的7小时
     *
     * @param context
     * @param listener
     */
    public static void showPickerByLimit(Context context, final onSelectedListener listener) {

        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar c = Calendar.getInstance();
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //正确设置方式 原因：注意事项有说明
        startDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                , c.get(Calendar.HOUR_OF_DAY) + 8, c.get(Calendar.MINUTE));

        endDate.set(c.get(Calendar.YEAR) + 4, 11, 31);

        selectedDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                , c.get(Calendar.HOUR_OF_DAY) + 8, c.get(Calendar.MINUTE));

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, true, true, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期和时间")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }

    public static void showPickerHMS(Context context, final onSelectedListener listener) {

        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar c = Calendar.getInstance();
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //正确设置方式 原因：注意事项有说明
        startDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                , c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE) + 3);

        endDate.set(c.get(Calendar.YEAR) + 4, 11, 31);

        selectedDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                , c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE) + 3);

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, true, true, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期和时间")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    public static void showPickerByLimit(int type, Context context, final onSelectedListener listener) {

        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar c = Calendar.getInstance();
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        if (type == 0) {
            //正确设置方式 原因：注意事项有说明
            startDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                    , c.get(Calendar.HOUR_OF_DAY) + 8, c.get(Calendar.MINUTE));

            endDate.set(c.get(Calendar.YEAR) + 4, 11, 31);

            selectedDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                    , c.get(Calendar.HOUR_OF_DAY) + 8, c.get(Calendar.MINUTE));
        } else if (type == 1) {
            //正确设置方式 原因：注意事项有说明
            startDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                    , c.get(Calendar.HOUR_OF_DAY) + 9, c.get(Calendar.MINUTE));

            endDate.set(c.get(Calendar.YEAR) + 4, 11, 31);

            selectedDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                    , c.get(Calendar.HOUR_OF_DAY) + 9, c.get(Calendar.MINUTE));
        }


        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, true, true, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期和时间")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }

    /**
     * 初始化时间选择器的方法
     *
     * @param context
     * @param listener
     */
    public static void showPickerByYeaerAndMonth(Context context, final onSelectedListener listener) {

        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //设置年月为4年到今年的日期
        startDate.set(startDate.get(Calendar.YEAR) - 4, 0, 1);
        endDate.set(endDate.get(Calendar.YEAR), endDate.get(Calendar.MONTH), endDate.get(Calendar.DAY_OF_MONTH));

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, false, false, false, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 初始化时间选择器的方法
     *
     * @param context
     * @param listener
     */
    public static void showPickerByYeaerAndMonthAndDayAndHour(Context context, final onSelectedListener listener) {

        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        //startDate.set(2013,1,1);
        Calendar endDate = Calendar.getInstance();
        //endDate.set(2020,1,1);

        //正确设置方式 原因：注意事项有说明
        startDate.set(2018, 0, 1);
        endDate.set(2030, 11, 31);

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, true, true, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 初始化时间选择器的方法
     *
     * @param context
     * @param listener
     */
    public static void showPickerByYeaerAndMonthAndDayAndHourWithLimit(Context context, final onSelectedListener listener) {

        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar c = Calendar.getInstance();
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //正确设置方式 原因：注意事项有说明
        startDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                , c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE));
        endDate.set(c.get(Calendar.YEAR) + 4, 11, 31);
        selectedDate.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
                , c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE));

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, true, false, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 初始化时间选择器的方法
     * 显示年月日的方法
     *
     * @param context
     * @param listener
     */
    public static void showPickerByYeaerAndMonthAndDay(Context context, final onSelectedListener listener) {
        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //正确设置方式 原因：注意事项有说明
        startDate.set(2018, 0, 1);
        endDate.set(2020, 11, 31);

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, false, false, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(false)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 初始化生日时间选择器的方法
     * 显示生日年月日的方法
     *
     * @param context
     * @param listener
     */
    public static void showPickerByYeaerAndMonthAndDayBithday(Context context, final onSelectedListener listener) {
        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //正确设置方式 原因：注意事项有说明
        startDate.set(2000, 0, 1);
        endDate.set(2017, 11, 31);

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, false, false, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(false)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 带限制时间日期的日期选择器,最大时间为当前日历时间
     *
     * @param context
     * @param listener
     */
    public static void showPickerByYeaerAndMonthAndDayByLimit(Context context, final onSelectedListener listener) {
        if (pvTime != null && pvTime.isShowing()) {
            pvTime.dismiss();
            pvTime = null;
        }

        //配置默认的选中时间
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //正确设置方式 原因：注意事项有说明
        startDate.set(2014, 0, 1);
        endDate.set(endDate.get(Calendar.YEAR), endDate.get(Calendar.MONTH), endDate.get(Calendar.DAY_OF_MONTH));

        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                if (listener != null) {
                    listener.onTimeSelect(date, v);
                }
            }
        })
                .setType(new boolean[]{true, true, true, false, false, false})// 默认全部显示,年月日时分秒
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(18)//标题文字大小
                .setTitleText("选择日期")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(false)//是否循环滚动
                .setTitleColor(context.getResources().getColor(R.color.pick_title_color))//标题文字颜色
                .setSubmitColor(context.getResources().getColor(R.color.pick_title_ok))//确定按钮文字颜色
                .setCancelColor(context.getResources().getColor(R.color.pick_title_cancle))//取消按钮文字颜色
                .setTitleBgColor(context.getResources().getColor(R.color.white))//标题背景颜色 Night mode
                .setBgColor(context.getResources().getColor(R.color.white))//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 自定义回调接口
     */

    public interface onSelectedListener {

        void onTimeSelect(Date date, View v);
    }
}
